perm filename STUFIT.FAI[NEW,LCS] blob
sn#561089 filedate 1981-01-31 generic text, type T, neo UTF8
00100 TITLE STUFIT
00200 ENTRY STUFIT, UNSTUF
00300 ; THIS PACKS NUMBERS IN BITS AS FOLLOWS:
00400 ; 4 / 5 / 3 / 24
00500 ; WDCNT/ P1 / P2 / P3
00600 ; THEN UNSTUF UNPACKS THEM.
00700 STUFIT: 0 ;CALL STUFIT(VARRAY,N,I)
00800 ;N=INPUT PNTR, I=OUTPUT PNTR
00900 MOVEI 1,@(16) ;GET LOC. OF V ARRAY
01000 ADD 1,@1(16) ;ADD TO IT N
01100 MOVE 7,2(1) ;GET P3
01200 FMPR 7,[1000.00] ;*1000.00
01300 KIFIX 7,7 ;MAKE IT INTEGER
01400 LSHC 7,-=24 ;SHIFT IT INTO AC8
01500 KIFIX 7,1(1) ;GET P2 - STAFF
01600 LSHC 7,-3
01700 KIFIX 7,(1) ;GET P1 - CODE
01800 LSHC 7,-5
01900 KIFIX 7,-1(1) ;GET WD CNT
02000 LSHC 7,-4 ;NOW ALL IS STUFFED INTO AC8
02100 MOVEI 1,@(16) ; LOC OF V
02200 ADD 1,@2(16) ; PLUS I
02300 MOVEM 8,(1) ; PUT PACKED INFO BACK INTO V ARRAY
02400 MOVEI 1,4
02500 ADDM 1,@1(16) ;ADD 4 TO N
02600 MOVEI 1,1
02700 ADDM 1,@2(16) ;ADD 1 TO I
02800 JRA 16,3(16)
02900 UNSTUF: 0 ;CALL UNSTUF(Q,I,V,N)
03000 MOVEI 1,@(16) ;GET LOC OF INPUT ARRAY
03100 ADD 1,@1(16) ;ADD PNTR I
03200 MOVEI 3,@2(16) ;GET LOC OF R
03300 ADD 3,@3(16) ;ADD PNTR N
03400 MOVE 1,(1) ;GET PACKED WORD
03500 LSHC 1,-=24 ;GET P3, SHIFT IT TO AC2
03600 LSH 2,-=12 ;SHIFT IT SOME MORE
03700 FLTR 2,2
03800 FDVR 2,[1000.00]
03900 MOVEM 2,2(3) ;PUT INTO R ARRAY
04000 LSHC 1,-3 ;GET P2
04100 LSH 2,-=33
04200 FLTR 2,2
04300 MOVEM 2,1(3)
04400 LSHC 1,-5
04500 LSH 2,-=31 ;GET P1
04600 FLTR 2,2
04700 MOVEM 2,(3)
04800 LSHC 1,-4 ;GET WD CNT
04900 LSH 2,-=32
05000 FLTR 2,2
05100 MOVEM 2,-1(3) ;ALL DONE
05200 MOVEI 1,4
05300 ADDM 1,@3(16) ;ADD 4 TO N
05400 MOVEI 1,1
05500 ADDM 1,@1(16) ;ADD 1 TO I
05600 JRA 16,4(16)
05700 END